c++ - ifstream : how to tell if specified file doesn\'t exist
全部标签 Implicitinstantiationofundefinedtemplate'std::basic_ifstream>'#ifndefMAPPER_H#defineMAPPER_H#include#include#include#include"KeyValue.h"#include"Parser.h"usingnamespacestd;classMapper{public:Mapper(ifstream&infile);~Mapper(void);voidloadTokens();voidshowTokens();voidmap();voidprintMap();voidprin
在以下代码中:#include#include#includeusingnamespacestd;intmain(){stringx="ThisisC++.";ofstreamof("d:/tester.txt");of>x;cout输出:这个由于>>运算符读取到第一个空格,我得到了这个输出。如何将行提取回字符串?我知道这种形式的istream&getline(char*s,streamsizen);但我想将它存储在一个字符串变量中。我该怎么做? 最佳答案 使用std::getline()来自.istream&getline(ist
我有:stringfilename:ifstreamfile(filename);编译器提示ifstream文件和字符串之间不匹配。我需要将文件名转换成什么吗?这是错误:error:nomatchingfunctionforcallto‘std::basic_ifstream>::basic_ifstream(std::string&)’/usr/include/c++/4.4/fstream:454:note:candidatesare:std::basic_ifstream::basic_ifstream(constchar*,std::_Ios_Openmode)[with_Ch
对不起,如果这很无聊,但我对C++很陌生。我正在尝试打开一个文件并使用ifstream读取它:vectorload_f(stringfile){vectortext;ifstreamifs(file);stringbuffer,str_line;intbrackets=0;str_line="";while(getline(ifs,buffer)){buffer=Trim(buffer);size_ts=buffer.find_first_of("()");if(s==string::npos)str_line+=""+buffer;else{while(s!=string::npos
使用std::ifstream时是否需要手动调用close()?例如在代码中:std::stringreadContentsOfFile(std::stringfileName){std::ifstreamfile(fileName.c_str());if(file.good()){std::stringstreambuffer;buffer我需要手动调用file.close()吗?ifstream不应该使用RAII关闭文件? 最佳答案 没有这就是RAII的用途,让析构函数完成它的工作。手动关闭它并没有什么坏处,但它不是C++的方式
我想打开一个文件进行阅读。但是,在这个程序的上下文中,如果文件不存在也没关系,我继续前进。我希望能够识别错误何时是“找不到文件”以及何时错误。否则意味着我需要退出并出错。我没有看到使用fstream的明显方法。我可以用C的open()和perror()来做到这一点。我推测也有一种fstream方法可以做到这一点。 最佳答案 编辑:我已被告知这并不一定表示文件不存在,因为它也可能由于访问权限或其他问题而被标记。我知道我回答这个问题已经很晚了,但我想我还是会为浏览的任何人留下评论。您可以使用ifstream的失败指示器来判断文件是否存在
我想打开一个文件进行阅读。但是,在这个程序的上下文中,如果文件不存在也没关系,我继续前进。我希望能够识别错误何时是“找不到文件”以及何时错误。否则意味着我需要退出并出错。我没有看到使用fstream的明显方法。我可以用C的open()和perror()来做到这一点。我推测也有一种fstream方法可以做到这一点。 最佳答案 编辑:我已被告知这并不一定表示文件不存在,因为它也可能由于访问权限或其他问题而被标记。我知道我回答这个问题已经很晚了,但我想我还是会为浏览的任何人留下评论。您可以使用ifstream的失败指示器来判断文件是否存在
#include#includeintmain(){std::fstreaminf("ex.txt",std::ios::in);while(!inf.eof()){std::cout>c){std::cout我真的对eof()函数感到困惑。假设我ex.txt的内容是:abc在使用eof()读取时,它总是读取一个额外的字符并显示-1。但是inf>>c给出了正确的输出,即“abc”?谁能帮我解释一下? 最佳答案 -1是get表示您已到达文件末尾。使用std::char_traits::eof()进行比较(或std::istream::
#include#includeintmain(){std::fstreaminf("ex.txt",std::ios::in);while(!inf.eof()){std::cout>c){std::cout我真的对eof()函数感到困惑。假设我ex.txt的内容是:abc在使用eof()读取时,它总是读取一个额外的字符并显示-1。但是inf>>c给出了正确的输出,即“abc”?谁能帮我解释一下? 最佳答案 -1是get表示您已到达文件末尾。使用std::char_traits::eof()进行比较(或std::istream::
您不会想象像使用C++标准库为Windows应用程序打开文件这样基本的事情是很棘手的……但看起来确实如此。这里的Unicode是指UTF-8,但我可以转换为UTF-16或其他格式,重点是从Unicode文件名中获取一个ofstream实例。在我破解自己的解决方案之前,这里有首选路线吗?尤其是跨平台的? 最佳答案 C++标准库不支持Unicode。char和wchar_t不需要是Unicode编码。在Windows上,wchar_t是UTF-16,但标准库中不直接支持UTF-8文件名(Windows上的char数据类型不是Unicod